package PruebasUnitarias;

import junit.framework.TestCase;
import Modelo.*;

public class JuegoTest extends TestCase {

	public void testXmlCon1Personaje(){
		Juego juego= new Juego("niveles/listaniveles.xml");
		
		try {
			juego.inicializarNivel(1);
		} 
		catch (MapaInvalidoException e) {
			e.mostrarMensaje();
		} catch (NivelInexistenteException e) {
			e.printStackTrace();
		}
		while(juego.getEstado()==Constantes.activo)
			juego.ciclo();	
		//Cambio el mapa
		assertFalse(juego.getEstado()==Constantes.victoria);
	}

	public void testAgregarPersonajes(){
		Juego juego= new Juego("niveles/listaniveles.xml");
		
		try {
			juego.inicializarNivel(2);
		} 
		catch (MapaInvalidoException e) {
			e.mostrarMensaje();
		} catch (NivelInexistenteException e) {
			e.printStackTrace();
		}
		
		while(juego.agregarPersonaje());
		assertTrue(juego.getMapa().getAlojador().getAlojados().size()==8);
	}
	
	public void testXmlCon8PersonajesVictoria(){
		Juego juego= new Juego("niveles/listaniveles.xml");
		
		try {
			juego.inicializarNivel(2);
		} 
		catch (MapaInvalidoException e) {
			e.mostrarMensaje();
		} catch (NivelInexistenteException e) {
			e.printStackTrace();
		}
	
		while(juego.getEstado()==Constantes.activo)
			juego.ciclo();
		//Cambio el mapa
		assertFalse(juego.getEstado()==Constantes.victoria);
	}
	
	public void testXmlCon5PersonajesDerrotaFuego(){
		Juego juego= new Juego("niveles/listaniveles.xml");
		
		try {
			juego.inicializarNivel(3);
		} 
		catch (MapaInvalidoException e) {
			e.mostrarMensaje();
		} catch (NivelInexistenteException e) {
			e.printStackTrace();
		}
	
		while(juego.getEstado()==Constantes.activo)
			juego.ciclo();			
		assertTrue(juego.getEstado()==Constantes.derrota);
	}
	
	public void testXmlCon5PersonajesDerrotaAgujero(){
		Juego juego= new Juego("niveles/listaniveles.xml");
		
		try {
			juego.inicializarNivel(4);
		} 
		catch (MapaInvalidoException e) {
			e.mostrarMensaje();
		} catch (NivelInexistenteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
		while(juego.getEstado()==Constantes.activo)
			juego.ciclo();	
		////Cambio el mapa
		assertTrue(juego.getEstado()==Constantes.derrota);
	}
	
}
